/* GUI CONVERTED from reoprp20.p (converter v1.75) Mon Aug 28 14:28:15 2000 */
/* reoprp20.p - EMPLOYEE PRODUCTIVITY REPORT                            */
/* Copyright 1986-2002 QAD Inc., Carpinteria, CA, USA.                  */
/* All rights reserved worldwide.  This is an unpublished work.         */
/* web convert reoprp20.p (converter v1.00) Fri Oct 10 13:57:17 1997 */
/* web tag in reoprp20.p (converter v1.00) Mon Oct 06 14:17:43 1997 */
/*F0PN*/ /*K0Z5*/ /*                                                    */
/*V8:ConvertMode=FullGUIReport                                 */
/* REVISION: 1.0      LAST MODIFIED: 02/03/87   BY: EMB *A9* */
/* REVISION: 2.0      LAST MODIFIED: 05/19/87   BY: EMB      */
/* REVISION: 2.0      LAST MODIFIED: 07/23/87   BY: EMB      */
/* REVISION: 2.0      LAST MODIFIED: 08/31/87   BY: EMB      */
/* REVISION: 2.0      LAST MODIFIED: 04/12/88   BY: EMB      */
/* REVISION: 2.0      LAST MODIFIED: 04/20/88   BY: EMB      */
/* REVISION: 4.0      LAST MODIFIED: 02/03/88   BY: RL  *A171**/
/* REVISION: 4.0      LAST MODIFIED: 02/24/88   BY: WUG *A175**/
/* REVISION: 5.0      LAST MODIFIED: 03/27/89   BY: EMB      */
/* REVISION: 7.3      LAST MODIFIED: 04/27/93   BY: DZS *GA37**/
/* REVISION: 7.4      LAST MODIFIED: 01/12/94   BY: qzl *H276*/
/* REVISION: 7.4      LAST MODIFIED: 11/30/94   BY: cpp *FU18*/
/* REVISION: 7.3      LAST MODIFIED: 03/14/95   By: DZN *G0G8*     */
/* REVISION: 8.6      LAST MODIFIED: 10/14/97   By: bvm *K0Z5*     */

/* REVISION: 8.6E     LAST MODIFIED: 02/23/98   BY: *L007* A. Rahane */
/* REVISION: 8.6E     LAST MODIFIED: 10/04/98   BY: *J314* Alfred Tan   */
/* REVISION: 9.1      LAST MODIFIED: 03/24/00   BY: *N08T* Annasaheb Rahane */
/* REVISION: 9.1      LAST MODIFIED: 05/03/00   BY: *N09M* Inna Lyubarsky */
/* REVISION: 9.1      LAST MODIFIED: 08/12/00   BY: *N0KP* myb              */
/* REVISION: 9.1      LAST MODIFIED: 08/28/00   BY: *N0P7* Arul Victoria   */
/*G0G8*/ /*V8:DontRefreshTitle=b */

/*K0Z5*/ /* DISPLAY TITLE */

/*GUI global preprocessor directive settings */
&GLOBAL-DEFINE PP_PGM_RP TRUE
&GLOBAL-DEFINE PP_ENV_GUI TRUE


/*GUI preprocessor directive settings */
&SCOPED-DEFINE PP_GUI_CONVERT_MODE REPORT

/*K0Z5*/ {mfdtitle.i "b+ "} /*H276*/

/* ********** Begin Translatable Strings Definitions ********* */

&SCOPED-DEFINE reoprp20_p_3 "Report Format"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_4 "Std Run"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_5 "Tot Hrs"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_7 "Std Hrs"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_8 "Std Rate"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_9 "Util %"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_12 "Pcs Comp"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_14 "Prod Hrs"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_15 "Down Hrs"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_16 "Prod %"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_17 "Detail/Summary"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_18 "Act Rate"
/* MaxLen: Comment: */

&SCOPED-DEFINE reoprp20_p_19 "Attain %"
/* MaxLen: Comment: */

/*N09M* ----- DELETED TRANSLATABLE STRINGS DEFINITIONS ----- *
* &SCOPED-DEFINE reoprp20_p_1 "Shift:"
* /* MaxLen: Comment: */
*
* &SCOPED-DEFINE reoprp20_p_2 "Report Total:"
* /* MaxLen: Comment: */
*
* &SCOPED-DEFINE reoprp20_p_6 "Total:"
* /* MaxLen: Comment: */
*
* &SCOPED-DEFINE reoprp20_p_10 " Date: "
* /* MaxLen: Comment: */
*
* &SCOPED-DEFINE reoprp20_p_11 "Employee Total:"
* /* MaxLen: Comment: */
*
* &SCOPED-DEFINE reoprp20_p_13 "Employee: "
* /* MaxLen: Comment: */
*
*N09M* ----------------------------------------------------- */

/* ********** End Translatable Strings Definitions ********* */

     define variable emp like op_emp.
     define variable emp1 like op_emp.
     define variable part like op_part.
     define variable part1 like op_part.
     define variable opdate like op_date.
     define variable opdate1 like op_date.
     define variable wkctr like op_wkctr.
     define variable wkctr1 like op_wkctr.
     define variable mach like op_mch.
     define variable mach1 like op_mch.
     define variable run_var like wr_run format "->>9.999".
     define variable setup_var like wr_setup format "->>9.999".
     define variable run_eff like wr_run format ">>>9.99%".
     define variable setup_eff like run_eff.
     define variable desc1 like pt_desc1.
     define variable std_run like wr_run label {&reoprp20_p_4}.
     define variable setup_per like wr_setup.
     define variable tot_hours as decimal format "->,>>9.9"
        label {&reoprp20_p_5}.
     define variable std_hours like tot_hours label {&reoprp20_p_7}.
     define variable prod_hours like tot_hours label {&reoprp20_p_14}.
     define variable down_hours like tot_hours label {&reoprp20_p_15}.
     define variable achvd_rate as integer label {&reoprp20_p_18}
        format "->>>,>>9".
     define variable pcs_comp like achvd_rate label {&reoprp20_p_12}.
     define variable std_rate like achvd_rate label {&reoprp20_p_8}.
     define variable shift like op_shift.
     define variable detail like mfc_logical label {&reoprp20_p_3}
        initial yes format {&reoprp20_p_17}.

/*N0P7* ------------------- BEGIN ADD ----------------------- */
         define variable d-std-hrs as decimal no-undo.
         define variable d-down-hrs as decimal no-undo.
         define variable d-prod-hrs as decimal no-undo.
         define variable d-prod-percent as decimal no-undo.
         define variable d-util-percent as decimal no-undo.
         define variable d-attain-percent as decimal no-undo.
/*N0P7* ------------------- END   ADD ----------------------- */

/*K0Z5* *moved up*
 * /* DISPLAY TITLE */
 * {mfdtitle.i "b+ "} /*H276*/
 *K0Z5**/


/*GUI preprocessor Frame A define */
&SCOPED-DEFINE PP_FRAME_NAME A

FORM /*GUI*/ 
   
 RECT-FRAME       AT ROW 1.4 COLUMN 1.25
 RECT-FRAME-LABEL AT ROW 1   COLUMN 3 NO-LABEL
 SKIP(.1)  /*GUI*/
emp       colon 15      emp1      label {t001.i} colon 49
   opdate    colon 15      opdate1   label {t001.i} colon 49
   part      colon 15      part1     label {t001.i} colon 49
   wkctr     colon 15      wkctr1    label {t001.i} colon 49
   mach      colon 15      mach1     label {t001.i} colon 49
   shift     colon 15 skip (1)
   detail    colon 15
 SKIP(.4)  /*GUI*/
with frame a side-labels width 80 attr-space NO-BOX THREE-D /*GUI*/.

 DEFINE VARIABLE F-a-title AS CHARACTER.
 F-a-title = &IF (DEFINED(SELECTION_CRITERIA) = 0)
  &THEN " Selection Criteria "
  &ELSE {&SELECTION_CRITERIA}
  &ENDIF .
 RECT-FRAME-LABEL:SCREEN-VALUE in frame a = F-a-title.
 RECT-FRAME-LABEL:WIDTH-PIXELS in frame a =
  FONT-TABLE:GET-TEXT-WIDTH-PIXELS(
  RECT-FRAME-LABEL:SCREEN-VALUE in frame a + " ", RECT-FRAME-LABEL:FONT).
 RECT-FRAME:HEIGHT-PIXELS in frame a =
  FRAME a:HEIGHT-PIXELS - RECT-FRAME:Y in frame a - 2.
 RECT-FRAME:WIDTH-CHARS IN FRAME a = FRAME a:WIDTH-CHARS - .5. /*GUI*/

/*GUI preprocessor Frame A undefine */
&UNDEFINE PP_FRAME_NAME



/* SET EXTERNAL LABELS */
setFrameLabels(frame a:handle).

/*K0Z5*/ {wbrp01.i}


/*GUI*/ {mfguirpa.i true  "printer" 132 }

/*GUI repeat : */
/*GUI*/ procedure p-enable-ui:


   if emp1 = hi_char then emp1 = "".
   if opdate = low_date then opdate = ?.
   if opdate1 = hi_date then opdate1 = ?.
   if part1 = hi_char then part1 = "".
   if wkctr1 = hi_char then wkctr1 = "".
   if mach1 = hi_char then mach1 = "".

/*K0Z5*/ if c-application-mode <> 'web' then
   
run p-action-fields (input "display").
run p-action-fields (input "enable").
end procedure. /* p-enable-ui, replacement of Data-Entry GUI*/

/*GUI*/ procedure p-report-quote:


/*K0Z5*/ {wbrp06.i &command = update &fields = "  emp emp1 opdate opdate1 part
          part1 wkctr wkctr1 mach mach1 shift detail" &frm = "a"}

/*K0Z5*/ if (c-application-mode <> 'web') or
/*K0Z5*/ (c-application-mode = 'web' and
/*K0Z5*/ (c-web-request begins 'data')) then do:

   if emp1 = "" then emp1 = hi_char.
   if opdate = ? then opdate = low_date.
   if opdate1 = ? then opdate1 = hi_date.
   if part1 = "" then part1 = hi_char.
   if wkctr1 = "" then wkctr1 = hi_char.
   if mach1 = "" then mach1 = hi_char.

   bcdparm = "".
   {mfquoter.i emp    }
   {mfquoter.i emp1   }
   {mfquoter.i opdate }
   {mfquoter.i opdate1}
   {mfquoter.i part   }
   {mfquoter.i part1  }
   {mfquoter.i wkctr  }
   {mfquoter.i wkctr1 }
   {mfquoter.i mach   }
   {mfquoter.i mach1  }
   {mfquoter.i shift  }
   {mfquoter.i detail }

/*K0Z5*/ end.

   /* SELECT PRINTER */
   
/*GUI*/ end procedure. /* p-report-quote */
/*GUI - Field Trigger Section */

/*GUI MFSELxxx removed*/
/*GUI*/ procedure p-report:
/*GUI*/   {gpprtrpa.i  "printer" 132}
/*GUI*/   mainloop: do on error undo, return error on endkey undo, return error:



   {mfphead.i}

   if shift > "" then do:
      FORM /*GUI*/  header
/*N09M     {&reoprp20_p_1} at 61 shift */
/*N09M*/   getTermLabelRtColon("SHIFT",11) at 61 format "x(11)" shift
      with STREAM-IO /*GUI*/  frame shift width 132 no-attr-space page-top.
      view frame shift.
   end.

   for each op_hist where (op_emp >= emp and op_emp <= emp1)
   and (op_date >= opdate and op_date <= opdate1)
   and (op_part >= part and op_part <= part1)
   and (op_wkctr >= wkctr and op_wkctr <= wkctr1)
   and (op_mch >= mach and op_mch <= mach1)
   and (op_type = "LABOR" or op_type = "DOWNTIME")
/*GA37 and (op_act_run <> 0 or op_act_setup <> 0) */
   and (op_shift = shift or shift = "")
   use-index op_date
   no-lock break by op_emp by op_date by op_part by op_wo_op by op_wkctr
   with frame b down width 132 no-attr-space:

    /* SET EXTERNAL LABELS */
    setFrameLabels(frame b:handle).

/*K0Z5* view frame phead. */

      if first-of(op_emp) then do:
     if page-size - line-counter < 4 then page.
     display WITH STREAM-IO /*GUI*/ .
/*FU18*  put "Employee: " op_emp. */
/*N09M /*FU18*/ put {&reoprp20_p_13} op_emp "  ". */
/*N09M* ----------- ADDED CODE ---------------------------- */
         put {gplblfmt.i
     &FUNC=getTermLabel(""EMPLOYEE"",16)
     &CONCAT="': '"
     } op_emp "  ".
/*N09M* --------------------------------------------------- */
     find emp_mstr where emp_addr = op_emp no-lock no-error.
     if available emp_mstr then put emp_fname + " " + emp_lname
     format "x(40)".
     if detail then put skip.
      end.

      if first-of(op_date) and detail then do:
     if page-size - line-counter < 2 then page.
     display WITH STREAM-IO /*GUI*/ .
/*N09M    put {&reoprp20_p_10} op_date skip. */
/*N09M*/  put " " {gplblfmt.i
      &FUNC=getTermLabel(""DATE"",8)
      &CONCAT="': '"
      } op_date skip.
      end.

      prod_hours = 0.
      down_hours = 0.
      std_hours = 0.
      if op_type = "LABOR" then prod_hours = op_act_setup + op_act_run.
      if op_type = "DOWNTIME" then down_hours = op_act_setup + op_act_run.
      std_hours = prod_hours.
      if op_type = "LABOR" and op_std_run <> 0
/*FU18*  then std_hours = op_std_run * op_qty_comp. */
/*FU18*/ then std_hours = op_act_setup + (op_std_run * op_qty_comp).

      accumulate op_qty_comp (total by op_wkctr).
      accumulate prod_hours (total by op_wkctr).
      accumulate down_hours (total by op_wkctr).
      accumulate std_hours (total by op_wkctr).

      accumulate prod_hours (total by op_emp).
      accumulate down_hours (total by op_emp).
      accumulate std_hours (total by op_emp).

      if last-of(op_wkctr) then do:
     tot_hours = (accum sub-total by op_wkctr prod_hours)
     + (accum sub-total by op_wkctr down_hours).
     pcs_comp = accum sub-total by op_wkctr op_qty_comp.
     achvd_rate = 0.
     if (accum sub-total by op_wkctr prod_hours) <> 0 then
     achvd_rate = pcs_comp / (accum sub-total by op_wkctr prod_hours).
     std_rate = 0.
     if (accum sub-total by op_wkctr std_hours) <> 0 then
     std_rate = pcs_comp / (accum sub-total by op_wkctr std_hours).
/*H276*/ /* find ro_det where ro_routing = op_part and ro_op = op_wo_op */
/*H276*/ find last ro_det where ro_routing = op_part and ro_op = op_wo_op
/*H276*/ and (ro_start = ? or ro_start <= opdate) and
/*H276*/ (ro_end = ? or ro_end >= opdate1)
     no-lock no-error.

     /*       if page-size - line-counter < 2 then page. */

     /* EMPLOYEE FIRST LEVEL SUMMARIZATION - CALLED "DETAIL" */
     if detail then do:
        display op_wo_op WITH STREAM-IO /*GUI*/ .
        if available ro_det then
        display ro_desc format "x(18)" WITH STREAM-IO /*GUI*/ .

        display op_wkctr op_mch
        pcs_comp std_rate achvd_rate

        (accum sub-total by op_wkctr std_hours)
/*N0P7*/ @ d-std-hrs
        label {&reoprp20_p_7} format "->,>>9.9"
        tot_hours label {&reoprp20_p_5}
        (accum sub-total by op_wkctr down_hours)
/*N0P7*/ @ d-down-hrs
        label {&reoprp20_p_15} format "->,>>9.9"
        (accum sub-total by op_wkctr prod_hours)
/*N0P7*/ @ d-prod-hrs
        label {&reoprp20_p_14} format "->,>>9.9"

        100 * (accum sub-total by op_wkctr std_hours)
        / (accum sub-total by op_wkctr prod_hours)
/*N0P7*/ @ d-prod-percent
        label {&reoprp20_p_16} format "->>9.9" space(2)

        100 * (accum sub-total by op_wkctr prod_hours) / tot_hours
/*N0P7*/ @ d-util-percent
        label {&reoprp20_p_9} format "->>9.9"

        100 * (accum sub-total by op_wkctr std_hours) / tot_hours
/*N0P7*/ @ d-attain-percent
        label {&reoprp20_p_19} format "->>9.9 "
        with frame b STREAM-IO /*GUI*/ .

        down 1.
        display op_part @ ro_desc WITH STREAM-IO /*GUI*/ .
     end.  /* IF DETAIL */

     accumulate tot_hours (total by op_emp).

      end.  /* IF LAST-OF OP_WKCTR */

      /* DISPLAY EMPLOYEE TOTAL */
      if last-of(op_emp) then do:
     if page-size - line-counter < 2 then do:
        page.
        clear frame b.
        display WITH STREAM-IO /*GUI*/ .
     end.
/*N09M    if detail then put {&reoprp20_p_11} to 70.
*    else put {&reoprp20_p_6} to 70. */
/*N09M* -------- ADDED CODE -------------------------- */
     if detail then put {gplblfmt.i
    &FUNC=getTermLabel(""EMPLOYEE_TOTAL"",19)
    &CONCAT="':'"
    } to 70.
     else put {gplblfmt.i
    &FUNC=getTermLabel(""TOTAL"",10)
    &CONCAT="':'"
    } to 70.
/*N09M* ---------------------------------------------- */

     put (accum sub-total by op_emp std_hours) format "->,>>9.9" to 79
     (accum sub-total by op_emp tot_hours) format "->,>>9.9" to 88
     (accum sub-total by op_emp down_hours) format "->,>>9.9" to 97
     (accum sub-total by op_emp prod_hours) format "->,>>9.9" to 106
     100 * (accum sub-total by op_emp std_hours)
     / (accum sub-total by op_emp prod_hours) format "->>9.9%" to 114
     100 * (accum sub-total by op_emp prod_hours)
     / (accum sub-total by op_emp tot_hours) format "->>9.9%" to 122
     100 * ((accum sub-total by op_emp std_hours)
     *  (accum sub-total by op_emp prod_hours))
     / ((accum sub-total by op_emp prod_hours)
     *  (accum sub-total by op_emp tot_hours))
     format "->>9.9%" to 130.
      end.  /* IF LAST-OF OP_EMP */

      /* DISPLAY REPORT TOTAL */
      if last (op_emp) then do:
     if page-size - line-counter < 2 then do:
        page.
        clear frame b.
        display WITH STREAM-IO /*GUI*/ .
     end.
/*N09M     put skip(1) {&reoprp20_p_2} to 70 */
/*N09M*/   put skip(1) {gplblfmt.i
        &FUNC=getTermLabel(""REPORT_TOTAL"",16)
        &CONCAT="':'"
        } to 70
     (accum total std_hours) format "->,>>9.9" to 79
     (accum total tot_hours) format "->,>>9.9" to 88
     (accum total down_hours) format "->,>>9.9" to 97
     (accum total prod_hours) format "->,>>9.9" to 106
     100 * (accum total std_hours)
     / (accum total prod_hours) format "->>9.9%" to 114
     100 * (accum total prod_hours)
     / (accum total tot_hours) format "->>9.9%" to 122
     100 * ((accum total std_hours)
     *  (accum total prod_hours))
     / ((accum total prod_hours)
     *  (accum total tot_hours))
     format "->>9.9%" to 130.

      end.  /* LAST OP_EMP */

      
/*GUI*/ {mfguirex.i } /*Replace mfrpexit*/

   end.  /* FOR EACH OP_HIST WITH FRAME B */

   /* REPORT TRAILER */
   
/*GUI*/ {mfguitrl.i} /*Replace mfrtrail*/

/*GUI*/ {mfgrptrm.i} /*Report-to-Window*/


end.  /* REPEAT */

/*K0Z5*/ {wbrp04.i &frame-spec = a}

/*GUI*/ end procedure. /*p-report*/
/*GUI*/ {mfguirpb.i &flds=" emp emp1 opdate opdate1 part part1 wkctr wkctr1 mach mach1 shift detail "} /*Drive the Report*/
